Attitude Controller

The purpose of the attitude controller is to reduce spacecraft pointing and rate errors to zero. Attitude control is performed in the ATC frame, which can be defined by any rotation relative to the BDY frame. Typically this rotation is [0 0 0 1], therefore making the ATC frame the same as the BDY frame.

Selected Attitude Controller

You have the option to create any number of attitude controllers with different gains, limits, actuator sets, etc. This provides flexibility for complex missions with two or more phases or modes that have very different control requirements. The dropdown menu in this section enables you to choose among controllers. The Index sets where in the controller dropdown list the controller will appear. You can change a controller's name, add a new controller, and copy or delete the selected controller. The Selected Attitude Controller panel also contains the Run Attitude Control Wizard button, which opens the Attitude Control Wizard window.

Selected Attitude Controller

Attitude Control Wizard

Use the Attitude Control Wizard interface to populate a PID control system by specifying only the controller bandwidth. The wizard can be a good starting point for designing the PID controller even if you intend to tune it further.

Attitude Controller Wizard

Attitude control block diagram

This block diagram shows the topology of the PID controller implemented in the spacecraft flight software. Three independent attitude controllers, one for each ATC frame axis, are implemented.

Block Diagram

Gains and Limits

Gains and Limits

Gains (ATC)

In this tab, you can adjust the PID Gains for the particular attitude controller. Often, you can start with the Attitude Control Wizard and then refine the gains for your particular system if the default is not sufficient to meet requirements.

Gains are given as a 3x1 vector, with each value corresponding to the gain in the PID loop for each of the three spacecraft ATC controller axes.

Parameter Description Units
Loop Gain Gain applied to the output of the loop filter in the main branch of the PID controller kg*m2
Rate Gain Gain applied to the output of the limiter in the rate branch of the PID controller 1/s
Position Gain Gain applied to the output of the limiter in the position branch of the PID controller 1/s2
Integral Gain 1 Gain applied to the output of the limited discrete time integrator in the position branch of the PID controller 1/s3
Integral Gain 2 Gain applied to the output of the 2nd limited discrete time integrator in the position branch of the PID controller (this channel not typically used) 1/s4
Feed Forward Gain Gain applied to the output of the feed forward limiter in the feed forward branch of the PID controller, typically zero or one. N/A
Actuator sets (ATC)

In this section, you can specify which actuator set you want controlling a given axis. Typically the same set is used across all axes, but that is not required. You can also use a DCM/Quaternion to define the attitude control frame if you want it to be different from the body frame.

You cannot delete an actuator set or run the Actuator Wizard from the Actuator page if the actuator set is in use on this page.
Upper/Lower saturation limits (ATC)

You can set the upper and lower saturation limits to prevent large errors or integral gains from continuing to grow and disrupt the filter. Selecting the check boxes labeled Update Lower Limit will force the lower limits to be the negative of the upper limits.

Parameter Description Units
Upper/Lower Torque Command Limit Upper/lower limit on the output of the loop gain in the main branch of the PID controller N*m
Upper/Lower Position Error Limit Upper/lower limit on the output of the filter in the position branch of the PID controller rad
Upper/Lower Rate Error Limit Upper/lower limit on the output of the filter in the rate branch of the PID controller rad/s
Upper/Lower Integral Limit 1 Upper limit on the output of the discrete time integrator in the position branch of the PID controller rad*s2
Upper/Lower Integral Limit 2 Upper limit on the output of the discrete time integrator in the position branch of the PID controller rad*s3
Upper/Lower Feed Forward Limit Upper/lower limit on the output of the filter in the feed forward branch of the PID controller N*m

Filters

The Filters tab enables you to set the numerator and denominator coefficients of the loop, position, rate, and feed forward filters in each of the attitude controller axes.

Filter

Parameter Description
Loop Filter Loop discrete (z-domain) filter located in the main branch of the PID controller
Position Filter Discrete (z-domain) filter located in the position branch of the PID controller
Rate Filter Discrete (z-domain) filter located in the rate branch of the PID controller
Feed Forward Filter Feed forward torque discrete (z-domain) filter

Feed Forward and additional controller options

You can choose which of the three parameters you would like to feed forward into the attitude controller.

Feed Forward

Parameter Description
Include Guidance Command Guidance command is the acceleration fed forward. (e.g. the angular acceleration during a slew multiplied by the inertia to get torque)
Include Gyroscopic Torque The onboard estimate of the current gyroscopic disturbance torque is fed forward.
Include Momentum Control Torque The estimated torque applied by the momentum controller is fed forward.

Additional controller options are also available to allow for greater flexibility in your attitude controller.

Parameter Description
Reset integrators and filters on changing attitude modes Selecting this check box means that the integrators and filters will not persist across attitude modes.
Store integrator states on change from this controller Select this check box to have SOLIS store the integrator states of the specific controller for future use.
Scale the loop gain by the inertia estimate Select this check box to have SOLIS use the estimated mass moment of inertia in the loop gain of the controller. This may be useful for objects with substantial mass property changes.